<?php

class Validator {
	// Kollar så emailen är en email
	function validateEmail($email) {

		$regexp = "/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i";
		if (!preg_match($regexp, $email)) {
			return false;
		}
		return true;
	}

	function validateIdNumber($number) {
		$regexp = "/^([12]{1}[90]{1}){0,1}[0-9]{6}[-]{0,1}[0-9]{4}$/i";
		//kollar så att personnumret stämmer "formatmässigt"
		if (!preg_match($regexp, $number)) {
			return false;
			//returnerar false från funktionen ifall formatet är fel
		} else {

			$number = str_replace('-', '', $number);
			//tar bort möjliga bindesstreck i personnumret.
			if (strlen(strval($number)) == 12) {//är det 12 siffror i numret....
				$number = substr($number, 2, 12);
				//.. så tar vi bort de två första siffrorna från årtalet.
			}
			$sum = 0;
			for ($i = 0; $i < strlen($number) - 1; $i++) {// en forloop som går igenom varje siffra i numret. strlen returnerar längden på strängen.
				$tempnr;
				//temporär variabel för att spara undan nummer
				if ($i % 2 == 0) {//varannan siffra ska multipliceras med 2 och varannan med 1
					$tempnr = $number[$i] * 2;
				}

				$tempnrsum = 0;
				//temporär variabel för att spara summan av numrena som vi multiplicerar
				for ($x = 0; $x < strlen(strval($tempnr)); $x++) {//separerar den multiplicerade summan så att vi kan addera dem med varandra
					$supertemp = strval($tempnr);
					$tempnrsum += $supertemp[$x];
					;
				}

				$sum += $tempnrsum;
				//summerar
			}
			$sum = strval($sum);
			//gör om variabeln till en sträng så att vi kan använda strängfunktioner
			$grej = 0;
			if (!$sum % 10 == 0) {//om summan inte är jämnt delbart med 10 så...
				$grej = ((string)$sum[0] + 1) * 10;
				//... så räknar vi ut det övre 10talet.
			}
			$grej = $grej - $sum;
			//grej = summan som ska stämma överens med sista talet i personnumret!!!!!

			if (strval($grej) != substr($number, strlen($number) - 1)) {//om grej inte stämmer överens med sista siffran returnerar funktionen false..
				return false;
			}

			return true;
			//GREAT SUCCESS!
		}
	}

	function validateDate($date) {
		$regex1 = "/^([12]{1}[0-9]{3}){1}-(([0][1-9])|([1][0-2])){1}-(([0][1-9])|([12][0-9])|([3][0-2])){1}$/i";
		//regex för formatet 1990-04-21
		$regex2 = "/^([0-9]{2}){1}-(([0][1-9])|([1][0-2])){1}-(([0][1-9])|([12][0-9])|([3][0-2])){1}$/i";
		//regex för formatet 90-04-21
		$regex3 = "/^([0-9]{2}){1}(([0][1-9])|([1][0-2])){1}(([0][1-9])|([12][0-9])|([3][0-2])){1}$/i";
		//regex för formatet 900421

		$month;
		$day;

		if (preg_match($regex1, $date)) {//matchar datumet i format nummer 1 så.......
			$month = substr($date, 5, 2);
			//hämtar vi månaden på positionen 5-7.
			$day = substr($date, 8, 2);
			//hämtar dag på position 8-10
		} else if (preg_match($regex2, $date)) {//samma för format 2
			$month = substr($date, 3, 2);
			$day = substr($date, 6, 2);
		} else if (preg_match($regex3, $date)) {//samma för format 3
			$month = substr($date, 2, 2);
			$day = substr($date, 4, 2);
		} else {//om datumet inte stämmer överens med något av formaten returnerar funktionen false
			return false;
		}

		switch($month) {
			case '01' || '03' || '05' || '07' || '08' || '10' || '12' :
				//om
				if ($day > 31)
					return false;
				break;
			case '02' :
				if ($day > 28)
					return false;
				break;
			default :
				if ($day > 30)
					return false;
				break;
		}

		return true;
	}

	function validateNumber($number) {
		return is_numeric($number);
	}

	function validatePassword($password) {
		$regex = "/^[a-zA-Z0-9_-]{6,12}$/";
		if (!preg_match($regex, $password)) {
			return false;
		}
		return true;
	}

	function validateNoHTMLJS($code) {
		$regex = "/^[a-zåäöA-ZÅÄÖ0-9?!.,'`´ ]{1,}+$/";
		//$regex = '/(/?[<=>|>&%:;.\/,{}\']*)\/?)/';
		if (preg_match($regex, $code)) {
			return false;
		}
		return true;
	}

	function validateHTMLButNoJS($code) {
		$regex = "/<script>.<\/script>/";
		//$regex = "/(\/?[<=>|>&%:;.\/,{}']*)\/?)/";
		if (preg_match($regex, $code)) {
			return false;
		}
		return true;
	}

}
